// 封装获取当前城市的方法，并且存到本地，在 Home，CityList等组件使用
import { getInfoAPI } from '../api'

const getCurrentCityName = () => {
  // 获取localStorage中的城市，并判断 localStorage 中是否有定位的城市
  const localCity = localStorage.getItem('hkzf_city')

  if (!localCity) {
    // 如果没有数据，就是用首页中获取定位城市的代码来获取，并且存储到本地，然后返回该城市数据
    return new Promise((resolve, reject) => {
      // 通过IP定位获取到当前城市名称
      const curCity = new window.BMapGL.LocalCity()
      curCity.get(async (res) => {
        try {
          // console.log(res, '@@') // 当前位置信息
          const { data } = await getInfoAPI(res.name)
          // 存储到本地
          localStorage.setItem('hkzf_city', JSON.stringify(data.body))
          // 反回该城市数据
          resolve(data.body)
        } catch (error) {
          // 获取定位失败
          reject(error)
        }
      })
    })
  }

  // 有数据，直接返回本能中的城市数据
  // 注意：上因为上面处理了异步操作，使用了Promise，因此，为了函数返回值的统一，此处也返回Promise
  // 因为此处的Promise 不会失败，所以，这里只要返回一个成功的Promise即可。
  return Promise.resolve(localCity)
}

export default getCurrentCityName
